package main

import (
	"flag"
	"fmt"
)

// 定义命令行参数
var mode = flag.String("mode", "say yes!!", "fast模式能让程序运行的更快")

func main() {
	// 指针示例
	var a int = 1010
	var ptr = &a

	fmt.Printf("%p\n", &a)

	fmt.Printf("%T %p\n", ptr, ptr)
	fmt.Println("指针地址代表的值", *ptr)
	// 指针换值
	var num1 = 10
	modifyFromPoint(num1)
	fmt.Println("未使用指针，方法外", num1)

	var num2 = 20
	newModifyFromPoint(&num2)
	fmt.Println("未使用指针，方法外", num2)
	// new方法声明指针
	str := new(string)
	*str = "hello"
	fmt.Println("new方法声明指针：", *str)

	flag.Parse()
	fmt.Println(*mode)
}

func modifyFromPoint(num int) {
	num = 1000
}

func newModifyFromPoint(ptr *int) {
	*ptr = 1000
}
